import { setToken, getToken, removeToken } from '@/utils/auth'
import { login, getUserInfo } from '@/api/user'
const state = {
  token: getToken(), // 从 缓存 cookie 获取以前token
  userInfo: {}, // // null undefined 防止后面 userInfo.userid 不报错

  // 学习目标：修复动态路由菜单不显示问题
  // 💥💥 静态路由在创建阶段，可以被this.$router.options.routes获取到， 动态添加的，无法获取
  // ✅✅ 把静态路由 +  有权限的路由，存到vuex中
  // ✅✅ 在左侧菜单组件中， 从vuex中取出所有的路由， 替换去遍历
  // 步骤：
  routes: []// 路由权限渲染 第一步：vuex的user模块中， 用state声明数据routes
}

const getters = {
}

const mutations = {
  // 登录保存token
  setToken(state, token) {
    state.token = token
  },
  // 获取用户资料信息
  setUserInfo(state, userInfo) {
    state.userInfo = userInfo
  },
  // 第二步：定义mutation，用来修改routes
  setRoutes(state, newRoutes) {
    state.routes = newRoutes
  }
}

const actions = {
  // 登录保存token
  async login(content, data) {
    const resule = await login(data)
    const token = resule.data
    content.commit('setToken', token)
    setToken(token)
  },
  // 获取用户资料信息，存到vuex state对象中
  async getUserInfo(content) {
    const resule = await getUserInfo()
    if (resule) {
      content.commit('setUserInfo', resule.data)
    }
  },
  // 退出登录
  logout(content) {
    // 清除vuex中的token
    content.commit('setToken', '')
    // 清除cookie中的token
    removeToken()
    // 清除用户信息
    content.commit('setUserInfo', {})
  }
}
export default {
  namespaced: true,
  state,
  getters,
  mutations,
  actions
}
